package reflect;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

/**
 * 验证反射机制在实例化对象的灵活性
 * 代码不需要修改 只用该配置文件即可
 * 是框架底层的实现原理
 */

public class ReflectTest03 {
    public static void main(String[] args) {
        //通过IO流读取properties文件
        FileReader reader = null;

        Object obj1 = null;
        try {
            reader = new FileReader("src/reflect/classinfo.properties");
            //创建属性类对象map
            Properties pro = new Properties();//文件中左边是key 右边是value
            //加载文件流
            pro.load(reader);
            //关闭流
            reader.close();
//
//            //获取value值--类型名
//            /**
//             * 便携之处就在于直接修改配置文件 就可以实例化其他类型的对象 ---多态思想
//             */
            String className = pro.getProperty("className");
            System.out.println(className);

//            Class c1 = Class.forName("java.lang.String");
//            obj1 = c1.newInstance();

            //实例化对象
            Class c = Class.forName(className);
            Object obj=c.newInstance();
            System.out.println(obj);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    //    System.out.println(obj1);


    }
}
